package com.atguigu.gulimall.cart.service;

import com.atguigu.gulimall.cart.vo.CartItemVo;
import com.atguigu.gulimall.cart.vo.CartVo;

/**
 * @author DuGuanghan
 * @since 2025-02-14 16:15:43
 */
public interface CartService {
    /**
     * 添加购物车
     *
     * @param skuId SKU 编号
     * @param num   商品数量
     * @return {@link CartItemVo }
     * @author DuGuanghan
     * @since 2025-02-14 16:15:48
     */
    CartItemVo addCart(Long skuId, Integer num);

    /**
     * 获取购物车商品信息
     *
     * @param skuId SKU 编号
     * @return {@link CartItemVo }
     * @author DuGuanghan
     * @since 2025-02-17 15:45:43
     */
    CartItemVo getCartItem(Long skuId);

    /**
     * 获取购物车信息
     *
     * @return {@link CartVo }
     * @author DuGuanghan
     * @since 2025-02-17 16:57:02
     */
    CartVo getCart();

    /**
     * 更新购物车商品选中状态
     *
     * @param skuId   SKU 编号
     * @param checked 选中状态
     * @author DuGuanghan
     * @since 2025-02-18 10:33:26
     */
    void checkItem(Long skuId, Integer checked);

    /**
     * 更新购物车中指定商品的数量。
     *
     * @param skuId 商品的唯一标识符（SKU ID），用于指定要更新的商品。
     * @param num 要更新的商品数量，表示购物车中该商品的新数量。
     * @author DuGuanghan
     * @since 2025-02-18 11:50:51
     */
    void updateCartItemNum(Long skuId, Integer num);

    /**
     * 删除购物车中指定商品
     *
     * @param skuId SKU 编号
     * @author DuGuanghan
     * @since 2025-02-18 15:07:26
     */
    void deleteCartItem(Long skuId);

}
